package com.itheima.config;

import com.itheima.interceptor.LoginInterceptor;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Spring配置类 : 一般用来配置拦截器 , 跨域配置等等配置
 * 过滤器(filter) 与 拦截器(interceptor) 的区别 :
 * 相同点:执行都在controller(servlet)之前
 * 不同点:
 *      技术提供方: 过滤器 -> servlet   拦截器 -> spring
 *      执行顺序: 先执行过滤器 后执行拦截器
 *      拦截粒度: 过滤器过滤粒度粗 -> 编码转换,时间格式转换
 *              拦截器拦截力度细 -> 登录认证,接口日志记录
 * 如果继承 extends WebMvcConfigurationSupport springboot 会自己处理时间
 * 如果想使用自定义时间格式使用 WebMvcConfigurationSupport 则需要实现WebMvcConfigurer接口
 */
@Slf4j
// 配置类特化注解
@Configuration
// public class WebMvcConfig extends WebMvcConfigurationSupport { 这个会自己处理处理时间
public class WebMvcConfig implements WebMvcConfigurer { //这个不会
    @Resource
    LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(loginInterceptor)
                //添加拦截路径
                .addPathPatterns("/**")
                //排除拦截路径
                .excludePathPatterns("/login","/yml","/Auto");
    }

}
